{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2012年每天的单车共享数量\n",
    "\n",
    "Capital Bikeshare （美国 Washington, D.C.的一个共享单车公司）提供的自行车数据上进行回归分析。训练数据为 2011 年的数据，要求预测 2012 年每天的单车共享数量。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入必要的工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np # linear algebra\n",
    "import pandas as pd # data processing, CSV file I/O\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "#color = sns.color_palette()\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']        # 指定默认字体\n",
    "plt.rcParams['axes.unicode_minus'] = False          # 解决保存图像是负号'-'显示为方块的问题\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>dteday</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.344167</td>\n",
       "      <td>0.363625</td>\n",
       "      <td>0.805833</td>\n",
       "      <td>0.160446</td>\n",
       "      <td>331</td>\n",
       "      <td>654</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2011-01-02</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.363478</td>\n",
       "      <td>0.353739</td>\n",
       "      <td>0.696087</td>\n",
       "      <td>0.248539</td>\n",
       "      <td>131</td>\n",
       "      <td>670</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>2011-01-03</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.196364</td>\n",
       "      <td>0.189405</td>\n",
       "      <td>0.437273</td>\n",
       "      <td>0.248309</td>\n",
       "      <td>120</td>\n",
       "      <td>1229</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>2011-01-04</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.212122</td>\n",
       "      <td>0.590435</td>\n",
       "      <td>0.160296</td>\n",
       "      <td>108</td>\n",
       "      <td>1454</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>2011-01-05</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.226957</td>\n",
       "      <td>0.229270</td>\n",
       "      <td>0.436957</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>82</td>\n",
       "      <td>1518</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant      dteday  season  yr  mnth  holiday  weekday  workingday  \\\n",
       "0        1  2011-01-01       1   0     1        0        6           0   \n",
       "1        2  2011-01-02       1   0     1        0        0           0   \n",
       "2        3  2011-01-03       1   0     1        0        1           1   \n",
       "3        4  2011-01-04       1   0     1        0        2           1   \n",
       "4        5  2011-01-05       1   0     1        0        3           1   \n",
       "\n",
       "   weathersit      temp     atemp       hum  windspeed  casual  registered  \\\n",
       "0           2  0.344167  0.363625  0.805833   0.160446     331         654   \n",
       "1           2  0.363478  0.353739  0.696087   0.248539     131         670   \n",
       "2           1  0.196364  0.189405  0.437273   0.248309     120        1229   \n",
       "3           1  0.200000  0.212122  0.590435   0.160296     108        1454   \n",
       "4           1  0.226957  0.229270  0.436957   0.186900      82        1518   \n",
       "\n",
       "    cnt  \n",
       "0   985  \n",
       "1   801  \n",
       "2  1349  \n",
       "3  1562  \n",
       "4  1600  "
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# path to where the data lies\n",
    "#dpath = './data/'\n",
    "data = pd.read_csv(\"day.csv\")\n",
    "data.head()\n",
    "#data.tail()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据基本信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 16 columns):\n",
      "instant       731 non-null int64\n",
      "dteday        731 non-null object\n",
      "season        731 non-null int64\n",
      "yr            731 non-null int64\n",
      "mnth          731 non-null int64\n",
      "holiday       731 non-null int64\n",
      "weekday       731 non-null int64\n",
      "workingday    731 non-null int64\n",
      "weathersit    731 non-null int64\n",
      "temp          731 non-null float64\n",
      "atemp         731 non-null float64\n",
      "hum           731 non-null float64\n",
      "windspeed     731 non-null float64\n",
      "casual        731 non-null int64\n",
      "registered    731 non-null int64\n",
      "cnt           731 non-null int64\n",
      "dtypes: float64(4), int64(11), object(1)\n",
      "memory usage: 91.5+ KB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "instant       0\n",
       "dteday        0\n",
       "season        0\n",
       "yr            0\n",
       "mnth          0\n",
       "holiday       0\n",
       "weekday       0\n",
       "workingday    0\n",
       "weathersit    0\n",
       "temp          0\n",
       "atemp         0\n",
       "hum           0\n",
       "windspeed     0\n",
       "casual        0\n",
       "registered    0\n",
       "cnt           0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### 查看是否有空值\n",
    "data.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 探索数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看数据各特征的分布，以及特征之间是否存在相关关系等冗余。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>2.496580</td>\n",
       "      <td>0.500684</td>\n",
       "      <td>6.519836</td>\n",
       "      <td>0.028728</td>\n",
       "      <td>2.997264</td>\n",
       "      <td>0.683995</td>\n",
       "      <td>1.395349</td>\n",
       "      <td>0.495385</td>\n",
       "      <td>0.474354</td>\n",
       "      <td>0.627894</td>\n",
       "      <td>0.190486</td>\n",
       "      <td>848.176471</td>\n",
       "      <td>3656.172367</td>\n",
       "      <td>4504.348837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>211.165812</td>\n",
       "      <td>1.110807</td>\n",
       "      <td>0.500342</td>\n",
       "      <td>3.451913</td>\n",
       "      <td>0.167155</td>\n",
       "      <td>2.004787</td>\n",
       "      <td>0.465233</td>\n",
       "      <td>0.544894</td>\n",
       "      <td>0.183051</td>\n",
       "      <td>0.162961</td>\n",
       "      <td>0.142429</td>\n",
       "      <td>0.077498</td>\n",
       "      <td>686.622488</td>\n",
       "      <td>1560.256377</td>\n",
       "      <td>1937.211452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.059130</td>\n",
       "      <td>0.079070</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.022392</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>183.500000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.337083</td>\n",
       "      <td>0.337842</td>\n",
       "      <td>0.520000</td>\n",
       "      <td>0.134950</td>\n",
       "      <td>315.500000</td>\n",
       "      <td>2497.000000</td>\n",
       "      <td>3152.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.498333</td>\n",
       "      <td>0.486733</td>\n",
       "      <td>0.626667</td>\n",
       "      <td>0.180975</td>\n",
       "      <td>713.000000</td>\n",
       "      <td>3662.000000</td>\n",
       "      <td>4548.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>548.500000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.655417</td>\n",
       "      <td>0.608602</td>\n",
       "      <td>0.730209</td>\n",
       "      <td>0.233214</td>\n",
       "      <td>1096.000000</td>\n",
       "      <td>4776.500000</td>\n",
       "      <td>5956.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.861667</td>\n",
       "      <td>0.840896</td>\n",
       "      <td>0.972500</td>\n",
       "      <td>0.507463</td>\n",
       "      <td>3410.000000</td>\n",
       "      <td>6946.000000</td>\n",
       "      <td>8714.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          instant      season          yr        mnth     holiday     weekday  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean   366.000000    2.496580    0.500684    6.519836    0.028728    2.997264   \n",
       "std    211.165812    1.110807    0.500342    3.451913    0.167155    2.004787   \n",
       "min      1.000000    1.000000    0.000000    1.000000    0.000000    0.000000   \n",
       "25%    183.500000    2.000000    0.000000    4.000000    0.000000    1.000000   \n",
       "50%    366.000000    3.000000    1.000000    7.000000    0.000000    3.000000   \n",
       "75%    548.500000    3.000000    1.000000   10.000000    0.000000    5.000000   \n",
       "max    731.000000    4.000000    1.000000   12.000000    1.000000    6.000000   \n",
       "\n",
       "       workingday  weathersit        temp       atemp         hum   windspeed  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean     0.683995    1.395349    0.495385    0.474354    0.627894    0.190486   \n",
       "std      0.465233    0.544894    0.183051    0.162961    0.142429    0.077498   \n",
       "min      0.000000    1.000000    0.059130    0.079070    0.000000    0.022392   \n",
       "25%      0.000000    1.000000    0.337083    0.337842    0.520000    0.134950   \n",
       "50%      1.000000    1.000000    0.498333    0.486733    0.626667    0.180975   \n",
       "75%      1.000000    2.000000    0.655417    0.608602    0.730209    0.233214   \n",
       "max      1.000000    3.000000    0.861667    0.840896    0.972500    0.507463   \n",
       "\n",
       "            casual   registered          cnt  \n",
       "count   731.000000   731.000000   731.000000  \n",
       "mean    848.176471  3656.172367  4504.348837  \n",
       "std     686.622488  1560.256377  1937.211452  \n",
       "min       2.000000    20.000000    22.000000  \n",
       "25%     315.500000  2497.000000  3152.000000  \n",
       "50%     713.000000  3662.000000  4548.000000  \n",
       "75%    1096.000000  4776.500000  5956.000000  \n",
       "max    3410.000000  6946.000000  8714.000000  "
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## 各属性的统计特性\n",
    "data.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "此处得到各属性的样本数目、均值、标准差、最小值、1/4分位数（25%）、中位数（50%）、3/4分位数（75%）、最大值\n",
    "可初步了解各特征的分布"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 单变量分布分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 365 entries, 0 to 364\n",
      "Data columns (total 11 columns):\n",
      "season        365 non-null int64\n",
      "mnth          365 non-null int64\n",
      "holiday       365 non-null int64\n",
      "weekday       365 non-null int64\n",
      "workingday    365 non-null int64\n",
      "weathersit    365 non-null int64\n",
      "temp          365 non-null float64\n",
      "atemp         365 non-null float64\n",
      "hum           365 non-null float64\n",
      "windspeed     365 non-null float64\n",
      "cnt           365 non-null int64\n",
      "dtypes: float64(4), int64(7)\n",
      "memory usage: 34.2 KB\n"
     ]
    }
   ],
   "source": [
    "data=data.drop('casual', axis = 1)     #删掉无关特征   casual\n",
    "data=data.drop('registered', axis = 1) #删掉无关特征   registered\n",
    "data=data.drop('instant', axis = 1)    #删掉无关特征   instant\n",
    "data=data.drop('dteday', axis = 1)     #删掉无关特征   dteday\n",
    "\n",
    "data_2011 = data[data.yr == 0].copy()       #获得训练集\n",
    "data_2012 = data[data.yr == 1].copy()      #获得测试集\n",
    "\n",
    "data_2011=data_2011.drop('yr', axis = 1) #删掉无关特征\n",
    "data_2012=data_2012.drop('yr', axis = 1) #删掉无关特征\n",
    "\n",
    "data_2011.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.344167</td>\n",
       "      <td>0.363625</td>\n",
       "      <td>0.805833</td>\n",
       "      <td>0.160446</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.363478</td>\n",
       "      <td>0.353739</td>\n",
       "      <td>0.696087</td>\n",
       "      <td>0.248539</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.196364</td>\n",
       "      <td>0.189405</td>\n",
       "      <td>0.437273</td>\n",
       "      <td>0.248309</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.212122</td>\n",
       "      <td>0.590435</td>\n",
       "      <td>0.160296</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.226957</td>\n",
       "      <td>0.229270</td>\n",
       "      <td>0.436957</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   season  mnth  holiday  weekday  workingday  weathersit      temp     atemp  \\\n",
       "0       1     1        0        6           0           2  0.344167  0.363625   \n",
       "1       1     1        0        0           0           2  0.363478  0.353739   \n",
       "2       1     1        0        1           1           1  0.196364  0.189405   \n",
       "3       1     1        0        2           1           1  0.200000  0.212122   \n",
       "4       1     1        0        3           1           1  0.226957  0.229270   \n",
       "\n",
       "        hum  windspeed   cnt  \n",
       "0  0.805833   0.160446   985  \n",
       "1  0.696087   0.248539   801  \n",
       "2  0.437273   0.248309  1349  \n",
       "3  0.590435   0.160296  1562  \n",
       "4  0.436957   0.186900  1600  "
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_2011.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>365</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.370000</td>\n",
       "      <td>0.375621</td>\n",
       "      <td>0.692500</td>\n",
       "      <td>0.192167</td>\n",
       "      <td>2294</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>366</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.273043</td>\n",
       "      <td>0.252304</td>\n",
       "      <td>0.381304</td>\n",
       "      <td>0.329665</td>\n",
       "      <td>1951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>367</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.150000</td>\n",
       "      <td>0.126275</td>\n",
       "      <td>0.441250</td>\n",
       "      <td>0.365671</td>\n",
       "      <td>2236</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>368</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.107500</td>\n",
       "      <td>0.119337</td>\n",
       "      <td>0.414583</td>\n",
       "      <td>0.184700</td>\n",
       "      <td>2368</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>369</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.265833</td>\n",
       "      <td>0.278412</td>\n",
       "      <td>0.524167</td>\n",
       "      <td>0.129987</td>\n",
       "      <td>3272</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     season  mnth  holiday  weekday  workingday  weathersit      temp  \\\n",
       "365       1     1        0        0           0           1  0.370000   \n",
       "366       1     1        1        1           0           1  0.273043   \n",
       "367       1     1        0        2           1           1  0.150000   \n",
       "368       1     1        0        3           1           2  0.107500   \n",
       "369       1     1        0        4           1           1  0.265833   \n",
       "\n",
       "        atemp       hum  windspeed   cnt  \n",
       "365  0.375621  0.692500   0.192167  2294  \n",
       "366  0.252304  0.381304   0.329665  1951  \n",
       "367  0.126275  0.441250   0.365671  2236  \n",
       "368  0.119337  0.414583   0.184700  2368  \n",
       "369  0.278412  0.524167   0.129987  3272  "
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_2012.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 366 entries, 365 to 730\n",
      "Data columns (total 11 columns):\n",
      "season        366 non-null int64\n",
      "mnth          366 non-null int64\n",
      "holiday       366 non-null int64\n",
      "weekday       366 non-null int64\n",
      "workingday    366 non-null int64\n",
      "weathersit    366 non-null int64\n",
      "temp          366 non-null float64\n",
      "atemp         366 non-null float64\n",
      "hum           366 non-null float64\n",
      "windspeed     366 non-null float64\n",
      "cnt           366 non-null int64\n",
      "dtypes: float64(4), int64(7)\n",
      "memory usage: 34.3 KB\n"
     ]
    }
   ],
   "source": [
    "data_2012.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x14c80fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 目标y（总租车人数）的直方图／分布\n",
    "fig = plt.figure()\n",
    "sns.distplot(data_2011.cnt.values, bins=30, kde=True)\n",
    "plt.xlabel('每天总租车人数', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nfvcHRSgC7nYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x197bff60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 单个特征散点图\n",
    "plt.scatter(range(data_2011.shape[0]), data_2011[\"cnt\"].values,color='purple')\n",
    "plt.title(\"Distribution of cnt\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(366, 11)"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_2012.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 输入属性的直方图／分布"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "天气情况的分布，1 晴天 2 雾天 3 小雨小雪 4 大雨大雪大雾"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x147b9940>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(data_2011.weathersit, order=[1,2,3,4]);\n",
    "plt.xlabel('weathersit');\n",
    "plt.ylabel('Number of each weathersit');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 两两特征之间的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(9, 9)"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_2011=data_2011.drop('temp', axis = 1) #删掉强相关特征\n",
    "data_2012=data_2012.drop('temp', axis = 1) #删掉强相关特征\n",
    "data_2011=data_2011.drop('season', axis = 1) #删掉强相关特征\n",
    "data_2012=data_2012.drop('season', axis = 1) #删掉强相关特征\n",
    "\n",
    "#data_2011=data_2011.drop('weathersit', axis = 1) #删掉无关特征\n",
    "#data_2012=data_2012.drop('weathersit', axis = 1) #删掉无关特征\n",
    "#get the names of all the columns\n",
    "cols=data_2011.columns \n",
    "\n",
    "# Calculates pearson co-efficient for all combinations，通常认为相关系数大于0.5的为强相关\n",
    "data_corr = data_2011.corr().abs()\n",
    "data_corr.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1931a390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplots(figsize=(13, 9))\n",
    "sns.heatmap(data_corr,annot=True)\n",
    "\n",
    "# Mask unimportant features\n",
    "sns.heatmap(data_corr, mask=data_corr < 1, cbar=False)\n",
    "\n",
    "plt.savefig('Capital_Bikeshare.png' )\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "atemp and cnt = 0.78\n",
      "weathersit and hum = 0.58\n"
     ]
    }
   ],
   "source": [
    "#Set the threshold to select only highly correlated attributes\n",
    "threshold = 0.5\n",
    "# List of pairs along with correlation above threshold\n",
    "corr_list = []\n",
    "#size = data.shape[1]\n",
    "size = data_corr.shape[0]\n",
    "\n",
    "#Search for the highly correlated pairs\n",
    "for i in range(0, size): #for 'size' features\n",
    "    for j in range(i+1,size): #avoid repetition\n",
    "        if (data_corr.iloc[i,j] >= threshold and data_corr.iloc[i,j] < 1) or (data_corr.iloc[i,j] < 0 and data_corr.iloc[i,j] <= -threshold):\n",
    "            corr_list.append([data_corr.iloc[i,j],i,j]) #store correlation and columns index\n",
    "\n",
    "#Sort to show higher ones first            \n",
    "s_corr_list = sorted(corr_list,key=lambda x: -abs(x[0]))\n",
    "\n",
    "#Print correlations and column names\n",
    "for v,i,j in s_corr_list:\n",
    "    print (\"%s and %s = %.2f\" % (cols[i],cols[j],v))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "temp  and temp 这俩个特征强相关，去掉 temp 特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#data_2011=data_2011.drop('temp', axis = 1) #删掉无关特征\n",
    "#data_2012=data_2012.drop('temp', axis = 1) #删掉无关特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAakAAAGoCAYAAAD8cBr+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3X2UVNWZL/7vrqru6q5unJEWGBiD\nhrSycpGmCR0JEzVoUMTM9GVkSOBnRG8c0FxmgJ+jYRyde/tmSRzUYQH3mlEYjaL+YDQ4Lu6Nijpq\nMLmGpJE3nQTo+ILvIDhCdzXVXVX790fVKU5VnXPqnFPnter7WcslFPWyq2jOU/vZz362kFKCiIgo\niCJ+D4CIiEgPgxQREQUWgxQREQUWgxQREQUWgxQREQUWgxQREQUWgxQREQUWgxQREQUWgxQREQVW\nzO8B2HXllVfK5557zu9hEBGRPcLMnUI7k/r000/9HgIREbkstEGKiIhqH4MUEREFFoMUEREFFoMU\nEREFFoMUEREFFoMUEREFFoMUEREFFoMUEREFFoMUEREFFoMUEREFFoMUEREFFoMUEREFFoMUEdWV\nbFaiP5VGVub/n5V+D4kMhPaoDiIiq7JZiWMDQ1i2eTd+885xfPXckVi/cCraWhoRiZg6OYI8xpkU\nEdWN5HAGyzbvxmtvHUM6K/HaW8ewbPNuJIczfg+NdDBIEVHdSDRG8Zt3jhfd9pt3jiPRGPVpRFSJ\na0FKCPFjIcSf5X/9oBDiNSHEHao/N3UbEZFTkkMZfPXckUW3ffXckUgOcSYVVK4EKSHExQD+SEr5\nv4UQVwOISilnAJgghDjP7G1ujI2I6leiIYr1C6dixoQ2xCICMya0Yf3CqUg0cCYVVEJKZytbhBAN\nAPYDeAbAzwF8E8BzUspnhBALADQDmGrmNinlT0qeewmAJQAwfvz4ae+++66jYyei2pfNSiSHM0g0\nRpEcyiDREGXRhD9MfehuzKQWAfh3AHcDuBDAUgAf5P/sOIAxAFpM3lZESrlBStklpewaNWqUC0Mn\noloXiQi0xmOIiPz/GaACzY0gNRXABinlxwAeA7ADuZkSALTmX7Pf5G1ERBVx71PtciMQ9AGYkP91\nF4BzAVyU//0UAO8A2GXyNiKqI3aCjbL3afEjvTj/9mex+JFeHBsYYqCqEW5s5n0QwEP5daUGADMB\n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\ni94/AwE9eAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x13fe6c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nMzs96liGxSohmdlcM/vhCf48ZWZ/Z2Y/MrObJ9rnQZzzzOwxM/uBmW2wireZ2aHq/sfMbE7EMdaN\nx8y+ZmY7zGxNI+P7NeL8T6Ni/KmZrZ7Oc2lmbzGzbWb2qJl928zSExw37rxN57mcTJz1jjGzpJm9\nOOpcvjfiGOvGU70OnjSz/9ao+H7NOG8ZFeMeM/vqNJ/L0yT9H0kXS/q/E30Gpv26dM7F4j9Jp0n6\nrqRdJzjmU5LurG5/R9Ksevs8iPPzkt5V3d4mqUvSNZJu8ehcjounuu9/Vbe/Lum8qOMcc/zfSHrb\nNJ/LP5F0RXX7PklXT3Aua85bBOdyMnGOO0bShZLu8uhcjotH0kJJ/yDJJH1W0vujjnPM8V+W1DPN\n5/LfSnpfdftuSVf6cF3GqYVUlnS9pKMnOGaJpIer24+rchHU29dIbxinc+4O59y/VH+drcpM6fdJ\n+iMz22VmfxF1jBPEs0THz+WjkhY3LMKKycQpSTKziyQdcs69pGk8l865rzjnvlf9dY6kV+octkTj\nz1u9fQ0zmTgnOOZ9kj5oZk9U75yTUcY4QTz/VtIWV/kW3S7pkkbF+GvEKanS0yBprnOud4LYGxXj\n/3PO/djMLlWllbSjzmFLNM3XZWwSknPuqHPuV29wWJukl6rbfZLmTrCvYSYZpyTJzK6X9Ixz7ueq\ntJSWSLpI0iIz64o4xnrxeHsuJa1S5U5UmsZzOczMFkk6zTn34zp/HPl1OewN4qx3zJOqtDgulpSS\n9HsRx1gvHm/PpaSPq9KKkqb5XJqZqXJD97qkYp1Dpv26jE1CmqR+Sa3V7XZV/v319kXOzDolfUbS\nrdVd/+ScO+acK0varUrzOUr14vH1XJ4q6Qzn3HPVXdN6Ls2sQ5VkONEzSi+uy0nEWe+Yfc65X1S3\nexX9uawXj6/nMpB0maTHqrum9Vy6io9L2qdK9+tY035devGFMY126ngTc76k5yfYF6nqA8eNkm4e\n1QLYbmZvNbOspN+V9HRkAU4cj3fnsur3VXk+OGzazmX1gfZmSaudcxMVCI78upxMnBMc8w0zm29m\nCUkfkrQ3yhgniMe7c1l1iaSfVLsSpek9l7eb2Q3VX0+VdKTOYdN/XU7HA7Tp/E/SY9Wfl0v6xJg/\ne7ukZyStU6V5nKi3z4M475L0C1XunB5TpQ/8Mkk/VeVu5hMexDguHkmnqPIhulfSv0h6S9RxVvf/\ntaQLTxR7A2O7RZUukeH/l5+V9Lkxx4w7b9N9LicZ59hjrpf0nup5fErS5z2IcVw8qtx4/6j6Gd8v\n6Zyo46we9xeSrjlR7A2M8TRJ31PluflXJF3gw3XZdJUazOw3Vcnw21219VFvH05OtXV3haTHnXO/\njDqemaLeeeNcTh0za5X071QZkXkg6nhmium+LpsuIQEA/NRsz5AAAJ4iIQEAvEBCAgB4gYQENJCZ\ndZtZ96jf7zSzJQ14ny+d6H2BmYCEBDRWd/W/hnLO3Tpm17S8LzCVGGUHvAEz61WljMtTqnzJf1OV\nsilnSHrKOfdxM2tXpXhrm6RnnXM3mdkXJP1B9WVecs79jpndqUpZmEtUmdPxAVVq8T04+vWq7/uY\nKnPjupxzV1aHLm+u/r3DkpY650rDxzrnllS3x71vQ04MMMVoIQFv7ICkKyU9oUplh4slPe2cu1TS\nW6u18N6qSqmY90s628zmOudWS/pLSX85JimcW/27j6gymXdFndeTKsU2dzjnrqz+/m5JYfW4/6lK\n6ZZxTvC+gNdISMAb2yXpOkl/L2mppIOS/qDagulUZUmLoqQ/UqX11KHj9b7qebD680VJaUnvrPN6\nUiVJPTImjqfN7FFVEmTuzf7DAJ+QkIA3tluVlsz3VUkEmyR9qdpFtkaVxPKHqnTZLZc0MOrvDkrK\nSiPVlTXmz6VKOZuxrydVClmONl/Sj5xzv6tK6ZcTLaNQ730Br5GQgDe2S9ILqnTdvaLKgmZXmdnj\nkv5YlRbT9yStlvSD6t8ZbuV8T9I1ZvYjTZxA7q/zevU8L2mlmf2TpN9QpSL0RCbzvoBXGNQAAPAC\nLSQAgBdISAAAL5CQAABeICEBALxAQgIAeIGEBADwwv8HBojpLkERxqEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x14cd1dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Scatter plot of only the highly correlated pairs\n",
    "for v,i,j in s_corr_list:\n",
    "    sns.pairplot(data_2011, size=6, x_vars=cols[i],y_vars=cols[j] )\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "训练数据准备"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 从原始数据中分离输入特征x和输出y\n",
    "y = data_2011['cnt'].values\n",
    "X = data_2011.drop('cnt', axis = 1)\n",
    "\n",
    "#用于后续显示权重系数对应的特征\n",
    "#columns = X.columns\n",
    "\n",
    "#将数据分割训练数据与测试数据\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# 随机采样20%的数据构建测试样本，其余作为训练样本\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.2)\n",
    "\n",
    "\n",
    "# 从原始数据中分离输入特征x和输出y\n",
    "y_train = data_2011['cnt'].values\n",
    "X_train = data_2011.drop('cnt', axis = 1)\n",
    "\n",
    "#用于后续显示权重系数对应的特征\n",
    "columns = X_train.columns\n",
    "\n",
    "# 从原始数据中分离输入特征x和输出y\n",
    "y_final = data_2012['cnt'].values\n",
    "X_final = data_2012.drop('cnt', axis = 1)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用scale正则对标签做归一化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\validation.py:475: DataConversionWarning: Data with input dtype int64 was converted to float64 by the scale function.\n",
      "  warnings.warn(msg, DataConversionWarning)\n"
     ]
    }
   ],
   "source": [
    "# 数据标准化\n",
    "from sklearn.preprocessing import StandardScaler,scale\n",
    "\n",
    "# 分别对训练和测试数据的特征以及目标值进行标准化处理\n",
    "#X_train = ss_X.fit_transform(X_train)\n",
    "#X_final = ss_X.transform(X_final)\n",
    "\n",
    "#y_train = preprocessing.normalize(y_train.reshape,norm='l2')   #转化为列向量\n",
    "#y_final = preprocessing.normalize(y_final.reshape,norm='l2')  #reshape转化为列向量\n",
    "#y_train=preprocessing.Normalizer().fit_transform(y_train.reshape(-1,1))\n",
    "#y_test=preprocessing.Normalizer().fit_transform(y_test.reshape(-1,1))\n",
    "#y_final=preprocessing.Normalizer().fit_transform(y_final.reshape(-1,1))\n",
    "#print(normalizer)\n",
    "#normalizer.transform(y_train.reshape(-1,1))\n",
    "# 数据标准化\n",
    "\n",
    "# 分别初始化对特征和目标值的标准化器\n",
    "ss_X = StandardScaler()\n",
    "ss_y = StandardScaler()\n",
    "\n",
    "# 分别对训练和测试数据的特征以及目标值进行标准化处理\n",
    "X_train = ss_X.fit_transform(X_train)\n",
    "X_test = ss_X.transform(X_test)\n",
    "X_final = ss_X.transform(X_final)\n",
    "\n",
    "#对y做标准化不是必须\n",
    "#对y标准化的好处是不同问题的w差异不太大，同时正则参数的范围也有限\n",
    "y_train = scale(y_train.reshape(-1, 1))   #转化为列向量\n",
    "y_test = scale(y_test.reshape(-1, 1))  #reshape转化为列向量\n",
    "y_final = scale(y_final.reshape(-1, 1))  #reshape转化为列向量\n",
    "#y_train = ss_y.fit_transform(y_train.reshape(-1, 1))   #转化为列向量\n",
    "#y_test = ss_y.transform(y_test.reshape(-1, 1))  #reshape转化为列向量\n",
    "#y_final = ss_y.transform(y_final.reshape(-1, 1))  #reshape转化为列向量\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1.1680154560440002e-16, 1.490436389222813e-16, 7.765494379891805e-17)"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.mean(),y_test.mean(),y_final.mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# L2正则 --> 岭回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of RidgeCV on test is 0.7492877193302798\n",
      "The r2 score of RidgeCV on train is 0.7297771275782807\n",
      "The r2 score of RidgeCV on 2012_test is 0.631828612230029\n"
     ]
    }
   ],
   "source": [
    "#岭回归／L2正则\n",
    "#class sklearn.linear_model.RidgeCV(alphas=(0.1, 1.0, 10.0), fit_intercept=True, \n",
    "#                                  normalize=False, scoring=None, cv=None, gcv_mode=None, \n",
    "#                                  store_cv_values=False)\n",
    "from sklearn.linear_model import  RidgeCV\n",
    "from sklearn.metrics import r2_score  #评价回归预测模型的性能\n",
    "\n",
    "#设置超参数（正则参数）范围\n",
    "#alphas = [ 0.001, 0.1, 1, 10,100]\n",
    "alphas=[i/100 for i in range(1,10000)]\n",
    "#n_alphas = 200\n",
    "#alphas = np.logspace(-10,2,n_alphas)\n",
    "\n",
    "#生成一个RidgeCV实例\n",
    "ridge = RidgeCV(alphas=alphas,store_cv_values=True)  \n",
    "\n",
    "#模型训练\n",
    "ridge.fit(X_train, y_train)    \n",
    "\n",
    "#预测\n",
    "X_test_pred_ridge = ridge.predict(X_test)\n",
    "X_train_pred_ridge = ridge.predict(X_train)\n",
    "X_final_pred_ridge = ridge.predict(X_final)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print ('The r2 score of RidgeCV on test is', r2_score(y_test, X_test_pred_ridge))\n",
    "print ('The r2 score of RidgeCV on train is', r2_score(y_train, X_train_pred_ridge))\n",
    "print ('The r2 score of RidgeCV on 2012_test is', r2_score(y_final, X_final_pred_ridge))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\ncQUAzz77LB/60IdYsGABy5cv3/O4zZs3s3Tp0j3XH3/8cebPn8/JJ5/MT37yE6A2qt28eTMA/f39\nrFu3jm3btrFgwQJOOukkLrnkkmHrGm69jRpc39KlS7n88ss56aSTmD9/Pi+//PKQ/R2qvs2bN3PG\nGWdwzjnncM4554y6lnoMZ0nSHhdccAFz5sxh1qxZLFy4kCuuuIIlS5Zw3333cfPNN7Njxw7Wr1/P\nsccey7333ssHPvABXn/99SGXddVVV3HhhRdyxx138NJLLw27zq1bt3LllVdy++23c+uttw7brtH1\njsbOnTtZv349Rx99NA888MCQ/R2uvltvvZXly5fzta99bcx1DOZnzpKkPVatWsW9997L3nvvTUTw\n2GOPsWHDBq655hp+/etfs23bNhYvXszdd9/NKaecwrx583jb24Ye5z3++OPMnTuXKVOm8N73vvct\n97/88ssATJkyhcsuu4zp06ePGOKNrnc0zj77bABmz57Nq6++OmR/h6tv0aJFzJs3b8w1DMWRsyTp\nTZYvX86aNWvYtWsX7373u7nyyitZt24dK1asYObMmWzYsIGzzjqLtWvXcvfdd/OLX/xiyOXMnj2b\nRx99lF27dvHwww8DMG3aNLZv386uXbtYu3YtACtXruTiiy/mK1/5yohnOTe63tHYf//933R9qP4O\nV9/06dPHvP7hOHKWVIxGz05u9VnMerMZM2awcOFCvvGNb7BixQrOO+88Lr30Ug4//HBOP/10Xn31\nVc4++2xee+01Dj74YA477LAhl3PhhRdy5plnsnLlSqZNmwbA6aefzkUXXcSRRx7JkUceCcCpp57K\npz/9aXp6ethvv/3YunUrhxxyyFuWd8QRRzS0XoDzzz9/T3h+9rOf5bTTTmuo70P1d6j62i0ys60r\n6O3tTb8yUlIjuj2cf/rTn3LMMcdMdBlqkaG2Z0Rsyszeeo/1sLYkSYUxnCVJKozhLEkFafdHjRof\nY92OhrMkFWKfffZhx44dBnSH2/2tVPvss0/Ty2jobO2ImAn8HvBAZj7X9NokScM69NBD2bJlC9u3\nb5/oUjRGu+cnb1bdcI6IGcD/Br4FrIyIhcCVwHuAb2Xmnze9dknSHlOnTm36+381uTQycj4O+LPM\n/EEV1AuBvTLzxIj4akQclZl/394yJUnqHnXDOTO/CxARHwDeB8wEbqzuvhNYABjOkiS1SKOfOQew\nBPgVkMDu6VGeB44fov0yYBnUpm+TpMmi2ydK0fho6GztrPkT4CFgPrBvddf0oZaRmaszszcze3t6\nelpWrCRJ3aBuOEfERRHxqerqgdROBltQXZ8LbG5PaZIkdadGDmuvBm6MiPOBR4Cbge9FxDuBxUB7\nvi9LkqQu1cgJYb8CThl4W0T0VbddlZkvtKc0SZK6U1NfGVkF9o11G0qSpFFz+k5JkgpjOEuSVBjD\nWZKkwhjOkiQVxnCWJKkwhrMkSYUxnCVJKozhLElSYQxnSZIKYzhLklQYw1mSpMIYzpIkFcZwliSp\nMIazJEmFaeorIyVNXv39nbFMaTJz5CxJUmEMZ0mSCmM4S5JUGMNZkqTCGM6SJBXGcJYkqTCGsyRJ\nhTGcJUkqjJOQSGo7JyGRRseRsyRJhTGcJUkqjOEsSVJhDGdJkgpjOEuSVBjDWZKkwhjOkiQVxnCW\nJKkwhrMkSYVxhjCpSzhLl9Q5HDlLklQYw1mSpMIYzpIkFcZwliSpMIazJEmFMZwlSSpM3X+lioi3\nA38L7AX8GlgC/Bz4ZdXkgsx8uG0VSpLUZRoZOZ8BrMzMRcDTwArghszsq34MZkmSWqhuOGfmFzNz\nbXW1B/h/wKkRcX9ErIkIJzKRJKmFGv7MOSJOBGYAa4GTM/N9wFTgo0O0XRYRGyNi4/bt21tWrCRJ\n3aChcI6ImcAq4Fzgocx8qrprI3DU4PaZuTozezOzt6enp2XFSpLUDeqGc0RMA24CLs7MJ4DrImJu\nROwFfAx4sM01SpLUVRoZOZ8HHA9cEhHrgEeB64D/A2zIzLvaV54kSd2n7slcmXk1cPWgmy9rTzmS\nJMlJSCRJKozhLElSYQxnSZIKYzhLklQYw1mSpMI49aakjtPf3562UikcOUuSVBjDWZKkwhjOkiQV\nxnCWJKkwhrMkSYUxnCVJKozhLElSYQxnSZIKYzhLklQYw1mSpMIYzpIkFcZwliSpMIazJEmFMZwl\nSSqM4SxJUmEMZ0mSCmM4S5JUGMNZkqTCGM6SJBXGcJYkqTCGsyRJhTGcJUkqjOEsSVJhDGdJkgpj\nOEuSVBjDWZKkwhjOkiQVxnCWJKkwhrMkSYUxnCVJKozhLElSYQxnSZIKYzhLklQYw1mSpMIYzpIk\nFcZwliSpMHXDOSLeHhG3R8SdEfHNiJgWEWsiYkNEXDoeRUqS1E0aGTmfAazMzEXA08DpwF6ZeSJw\nREQc1c4CJUnqNlPqNcjMLw642gOcCfxVdf1OYAHw9wMfExHLgGUAs2fPbkmhktRO/f0TXYH0hoY/\nc46IE4EZwD8AW6ubnwdmDW6bmaszszcze3t6elpSqCRJ3aKhcI6ImcAq4FxgJ7Bvddf0RpchSZIa\n08gJYdOAm4CLM/MJYBO1Q9kAc4HNbatOkqQu1Mio9zzgeOCSiFgHBHBWRKwEPgF8q33lSZLUfRo5\nIexq4OqBt0XELcApwFWZ+UKbapMkqSvVDeehZOavgBtbXIskScKTuSRJKo7hLElSYQxnSZIKYzhL\nklQYw1mSpMIYzpIkFcZwliSpMIazJEmFMZwlSSqM4SxJUmEMZ0mSCmM4S5JUGMNZkqTCNPWtVJKk\nkfX3t6etuoMjZ0mSCmM4S5JUGMNZkqTCGM6SJBXGcJYkqTCGsyRJhTGcJUkqjOEsSVJhDGdJkgrj\nDGGSJjVn31IncuQsSVJhDGdJkgpjOEuSVBjDWZKkwhjOkiQVxnCWJKkwhrMkSYUxnCVJKozhLElS\nYQxnSZIKYzhLklQYw1mSpMIYzpIkFcZwliSpMIazJEmFaSicI2JWRKyvLh8SEVsiYl3109PeEiVJ\n6i5T6jWIiBnAtcD+1U3vBz6XmVe3szBJkrpVIyPnXcAS4MXq+jzg/Ij4cUR8vm2VSZLUpeqGc2a+\nmJkvDLjpdqAPOAE4MSKOG/yYiFgWERsjYuP27dtbVqwkSd2gmRPC7svMlzJzF/AAcNTgBpm5OjN7\nM7O3p8ePpCVJGo1mwvnbEfHbEbEfsAh4pMU1SZLU1eqeEDaEy4B7gFeBL2XmY60tSZKk7tZwOGdm\nX/X7HuDodhUkSVK3cxISSZIKYzhLklQYw1mSpMIYzpIkFcZwliSpMM38K5WkgvT3T3QFklrNkbMk\nSYUxnCVJKozhLElSYQxnSZIKYzhLklQYw1mSpMIYzpIkFcZwliSpMIazJEmFMZwlSSqM4SxJUmEM\nZ0mSCmM4S5JUGMNZkqTCGM6SJBXGcJYkqTCGsyRJhTGcJUkqjOEsSVJhpkx0AZLeqr9/oiuQNJEc\nOUuSVBjDWZKkwhjOkiQVxnCWJKkwhrMkSYUxnCVJKozhLElSYQxnSZIKYzhLklQYZwiTxpEzf2k8\njOZ55nOyTI6cJUkqjOEsSVJhDGdJkgpjOEuSVBjDWZKkwhjOkiQVpqFwjohZEbG+ujw1Im6NiO9H\nxLntLU+SpO5TN5wjYgZwLbB/ddMFwKbM/H3g4xFxQBvrkySp6zQyct4FLAFerK73ATdWl78H9La+\nLEmSulfdGcIy80WAiNh90/7A1ury88CswY+JiGXAMoDZs2e3ok5JmrQanaXL2by6RzMnhO0E9q0u\nTx9qGZm5OjN7M7O3p6dnLPVJktR1mgnnTcCC6vJcYHPLqpEkSU198cW1wG0RcRLwHuCHrS1JkqTu\n1vDIOTP7qt9PAKcA3wdOzsxd7SlNkqTu1NRXRmbmNt44Y1uSJLWQM4RJklQYw1mSpMIYzpIkFcZw\nliSpMIazJEmFMZwlSSqM4SxJUmEMZ0mSCmM4S5JUGMNZkqTCGM6SJBXGcJYkqTCGsyRJhWnqW6mk\nbtDf3562klSPI2dJkgpjOEuSVBjDWZKkwhjOkiQVxnCWJKkwhrMkSYUxnCVJKozhLElSYQxnSZIK\n4wxhKpqzdEnqRo6cJUkqjOEsSVJhDGdJkgpjOEuSVBjDWZKkwhjOkiQVxnCWJKkwhrMkSYUxnCVJ\nKozhLElSYQxnSZIKYzhLklQYw1mSpMIYzpIkFcZwliSpMKMO54iYEhFPRsS66ufYdhQmSVK3mtLE\nY44DbsjMi1pdjCRJau6w9jzg1Ii4PyLWREQzAS9JkobRTDj/CDg5M98HTAU+2tqSJEnqbs2Meh/K\nzN9UlzcCRw1uEBHLgGUAs2fPbr46SdIe/f0TXYHGSzMj5+siYm5E7AV8DHhwcIPMXJ2ZvZnZ29PT\nM+YiJUnqJs2MnC8HrgcCuCUz72ptSZIkdbdRh3NmPkLtjG1JktQGTkIiSVJhDGdJkgpjOEuSVBjD\nWZKkwhjOkiQVxqk3J9hoJhVo9QQEnbJuSeo2jpwlSSqM4SxJUmEMZ0mSCmM4S5JUGMNZkqTCGM6S\nJBXGcJYkqTCGsyRJhTGcJUkqjDOEVRqdscqZrcrlNpQm3kTOPNiO9U5UjY6cJUkqjOEsSVJhDGdJ\nkgpjOEuSVBjDWZKkwhjOkiQVxnCWJKkwhrMkSYUxnCVJKowzhE1CEzkDVifMvtWOGjuh39JQfO6W\nyZGzJEmFMZwlSSqM4SxJUmEMZ0mSCmM4S5JUGMNZkqTCGM6SJBXGcJYkqTCGsyRJhenIGcIandFm\nImeCmmyz7ky2/khSyRw5S5JUGMNZkqTCGM6SJBXGcJYkqTCGsyRJhTGcJUkqTNPhHBFrImJDRFza\nyoIkSep2TYVzRJwG7JWZJwJHRMRRrS1LkqTu1ezIuQ+4sbp8J7CgJdVIkiQiM0f/oIg1wBcy88GI\nWAQcn5lXDrh/GbCsuvpu4LFWFFuQdwDPTXQRbTBZ+wWTt2/2q/NM1r7Zr8Yclpk99Ro1O33nTmDf\n6vJ0Bo3AM3M1sLrJZRcvIjZmZu9E19Fqk7VfMHn7Zr86z2Ttm/1qrWYPa2/ijUPZc4HNLalGkiQ1\nPXK+GVgfEe8EFgPzWleSJEndramRc2a+SO2ksB8AH8rMF1pZVAeYrIfsJ2u/YPL2zX51nsnaN/vV\nQk2dECZJktrHGcIkSSqM4dylImJWRKyv0+aQiNgSEeuqn7qn/0tSp6r3ujier4mG8wgi4u0RcXtE\n3BkR34yIaSO07ZjpTCNiBnAtsH+dpu8HPpeZfdXP9vZXN3YNvvGYGhG3RsT3I+Lc8aptLBp5jkXE\nlIh4csCLx7HjWeNoNdinjtm3dqtXc6dtp4EaCLCO27eg4dfFcXtNNJxHdgawMjMXAU8DHxmqUQdO\nZ7oLWAK8WKfdPOD8iPhxRHy+/WWN3SjeeFwAbMrM3wc+HhEHtL24MRjFc+w44IYBLx4Pj1+Vo9NI\nnzpw32q05o7ZTgM1uH911L41QCOvi+P2mmg4jyAzv5iZa6urPcCzwzTto+DpTCPiywPeoa8D/rTB\nM+xvp9a3E4ATI+K4NpbZKo2+8ejjjW32PaD0yRP6aOw5Ng84NSLur0Zvzf675Hjoo36fGmlTmj7q\n19xJ22mgRvavPjpr3wJq/4XUwOviuL0mdsoTYlxExJepTTe6292ZeXlEnAjMyMwfDPPQ/YGt1eXn\ngePbWOaoZebyJh96X2b+BiAiHgCOAh5qWWEtMMI2q/fQwdtsVhvKa9oQ/fogsKa6PNJz7EfAyZn5\nVET8d+CjwC1tK3RsGtlvit63htFIzZ20nfao/o2WOvtX0fvWGI3ba6LhPMBQIRYRM4FVwL8e4aEj\nTmfawb4dEf8GeAFYBHx5gut5izG88di9zV6gts12tqyoFhjcr4j4axp7jj20+8UD2EjtxaNUjew3\nnbhvNVJzJ22n0Sp63xqjcXtN7IQn+oSpTgC7Cbg4M58YoWnHT2caEQsj4jODbr4MuIfaZDNfyszJ\n9AUmnbbNGq33uoiYGxF7AR8DHhyH2prVSJ86bTtBYzV30nYarU7cZm8x0a+JTkIygoj4I+DzvLHj\nXA08DHwyMy8d0O63gPXAd6imM+3CWdOKEhHrMrOvurwQeE9m/s2A+w8DbgPuAuZT22a7JqLWRgz1\nHAMO4a3Pxd8FrgcCuCUzL5mAchsyRJ9OB/6w0/etBvvVMdtpKLv3r8mwb5XKcG6R6izGU4DvZebT\nE12P6qvmhl8AfLv0F3yYnM+xRvrUif3uxJpbqdP2rRIZzpIkFcbPnCVJKozhLElSYQxnSZIKYzhL\nklQYw1mSpML8f+1BCE7XU5pHAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x19382978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#在训练集上观察预测残差的分布，看是否符合模型假设：噪声为0均值的高斯噪声\n",
    "f, ax = plt.subplots(figsize=(7, 5)) \n",
    "f.tight_layout() \n",
    "ax.hist(y_final - X_final_pred_ridge,bins=40, label='Residuals Linear', color='b', alpha=.5); \n",
    "ax.set_title(\"Histogram of Residuals\") \n",
    "ax.legend(loc='best');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nOSKs5wcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x13ed5eb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#还可以观察预测值与真值的散点图\n",
    "plt.figure(figsize=(4, 3))\n",
    "plt.scatter(y_final, X_final_pred_ridge)\n",
    "plt.plot([-3, 3], [-3, 3], '--k')   #数据已经标准化，3倍标准差即可\n",
    "plt.axis('tight')\n",
    "plt.xlabel('True price')\n",
    "plt.ylabel('Predicted price')\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# L2可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nR/MAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a808940>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 8.66\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>coef_ridge</th>\n",
       "      <th>columns</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>[0.6642299332895394]</td>\n",
       "      <td>atemp</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>[0.22694495405633333]</td>\n",
       "      <td>mnth</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>[0.030491121041190145]</td>\n",
       "      <td>weekday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>[0.00672243883530782]</td>\n",
       "      <td>workingday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>[-0.037350005022760285]</td>\n",
       "      <td>holiday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>[-0.06226180694565883]</td>\n",
       "      <td>hum</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>[-0.12242663476107975]</td>\n",
       "      <td>windspeed</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>[-0.2041058479669603]</td>\n",
       "      <td>weathersit</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                coef_ridge     columns\n",
       "5     [0.6642299332895394]       atemp\n",
       "0    [0.22694495405633333]        mnth\n",
       "2   [0.030491121041190145]     weekday\n",
       "3    [0.00672243883530782]  workingday\n",
       "1  [-0.037350005022760285]     holiday\n",
       "6   [-0.06226180694565883]         hum\n",
       "7   [-0.12242663476107975]   windspeed\n",
       "4    [-0.2041058479669603]  weathersit"
      ]
     },
     "execution_count": 157,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse_mean = np.mean(ridge.cv_values_, axis = 0)\n",
    "plt.plot(np.log10(alphas), mse_mean.reshape(len(alphas),1)) \n",
    "\n",
    "#这是为了标出最佳参数的位置，不是必须\n",
    "#plt.plot(np.log10(ridge.alpha_)*np.ones(3), [0.28, 0.29, 0.30])\n",
    "\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()\n",
    "\n",
    "print ('alpha is:', ridge.alpha_)\n",
    "\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(columns), \"coef_ridge\":list((ridge.coef_.T))})\n",
    "fs.sort_values(by=['coef_ridge'],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# L1正则 --> Lasso"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of LassoCV on test is 0.6455136334846756\n",
      "The r2 score of LassoCV on train is 0.6563116859583997\n",
      "The r2 score of LassoCV on 2012_test is 0.5554355968638421\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:1094: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LassoCV\n",
    "\n",
    "#设置超参数搜索范围\n",
    "#alphas = [ 0.01, 0.1, 1, 10,100]\n",
    "\n",
    "#生成一个LassoCV实例\n",
    "#lasso = LassoCV(alphas=alphas)  \n",
    "lasso = LassoCV()  \n",
    "\n",
    "#训练（内含CV）\n",
    "lasso.fit(X_train, y_train)  \n",
    "\n",
    "#测试\n",
    "y_test_pred_lasso = lasso.predict(X_test)\n",
    "y_train_pred_lasso = lasso.predict(X_train)\n",
    "y_final_pred_lasso = lasso.predict(X_final)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print ('The r2 score of LassoCV on test is', r2_score(y_test, y_test_pred_lasso))\n",
    "print ('The r2 score of LassoCV on train is', r2_score(y_train, y_train_pred_lasso))\n",
    "print ('The r2 score of LassoCV on 2012_test is', r2_score(y_final, y_final_pred_lasso))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a82f080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 0.15577457089129843\n"
     ]
    }
   ],
   "source": [
    "mses = np.mean(lasso.mse_path_, axis = 1)\n",
    "plt.plot(np.log10(lasso.alphas_), mses) \n",
    "#plt.plot(np.log10(lasso.alphas_)*np.ones(3), [0.3, 0.4, 1.0])\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()    \n",
    "            \n",
    "print ('alpha is:', lasso.alpha_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
